home *** CD-ROM | disk | FTP | other *** search
Text File | 1995-08-23 | 1.6 KB | 54 lines | [TEXT/ReWr] |
- (* =======================small examples =================== *)
-
- factorial[0] -> 1;
- factorial[n:int] -> n*factorial[n-1];
-
- fib[0] -> 1;
- fib[1] -> 1;
- fib[n:int] -> fib[n-1]+fib[n-2];
-
- joinx[x:lis,y:lis] -> {.x,.y};
-
- sort[{.a,b,c,.d}]::b>c -> sort[{.a,c,b,.d}];
- sort[x] -> x;
-
- (* ========================== nprime ====================== *)
-
- nprime[n:int] -> primeaux[{},{},n,2];
-
- (* primeaux[(primes found so far <= sqrt[k]), (primes found so far > sqrt[k]), number found, this try] *)
- primeaux[l1:lis,l2:lis,0,k:int] -> k-1;
- primeaux[l1:lis,{s,.l2},n:int,k:int]::k>=s*s -> primeaux[{.l1,s},l2,n,k];
- primeaux[{.a,b:int,.c},l2:lis,n:int,k:int]::k%b=0 -> primeaux[{.a,b,.c},l2,n,k+1];
- primeaux[l1:lis,l2:lis,n:int,k:int] -> primeaux[l1,{.l2,k},n-1,k+1];
-
- (* ========================== atoi2 ======================= *)
-
- atoi2[.x] -> xatoix[xatoi[.x]];
-
- xatoix[x:int] -> x;
- xatoix[.x] -> "error - not a number";
-
- xatoi["-",.n] -> xnegx[xatoi[.n]];
- xatoi["$",.a] -> xatoih[0,.a];
- xatoi["%",.a] -> xatoib[0,.a];
- xatoi[x:char,.a]::xisdigit[x] -> xatoix[0,x,.a];
- xatoi[.a] -> {},.a;
-
- xnegx[{},.rest] -> {},.rest;
- xnegx[a:int,.rest] -> -a,.rest;
-
- xatoix[x:int,d:char,.n]::xisdigit[d] -> xatoix[10*x+d:int-"0":int,.n];
- xatoix[x:int,.n] -> x,.n;
-
- xatoih[x:int,d:char,.n]::xisdigit[d] -> xatoih[16*x+d:int-"0":int,.n];
- xatoih[x:int,d:char,.n]::d>="A" & d<="F" -> xatoih[16*x+10+d:int-"A":int,.n];
- xatoih[x:int,d:char,.n]::d>="a" & d<="f" -> xatoih[16*x+10+d:int-"a":int,.n];
- xatoih[x:int,.n] -> x,.n;
-
- xatoib[x:int,"0",.n] -> xatoib[2*x,.n];
- xatoib[x:int,"1",.n] -> xatoib[2*x+1,.n];
- xatoib[x:int,.n] -> x,.n;
-
- xisdigit[d:char] -> d>="0" & d<="9";
-